home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / DiskChangeRunner.s < prev    next >
Text File  |  1993-08-20  |  4KB  |  264 lines

  1. ; This routine shows how to use the diskchange prog, you call with 
  2. ; d0 = drive to check,  note: this routine doesnt hang if u specify a
  3. ; non-existen drive, nor if there is no disk,  it will return with
  4. ; d0 = 0 if a disk is found, or d0 = -1 if there isn't a disk in the drive..
  5. ;
  6. ; this routine shows a grey screen for no-disk, and white for drive with disk
  7. ;
  8.  
  9.     Opt    c-
  10.     Section    "Disk-in-drive check Example",Code_c
  11.     
  12.     IncDir    Df1:
  13.  
  14. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  15.     Bsr    KillSys      
  16.     
  17.     Lea    CopperList(pc),a0 
  18.     Lea    HardWare,a6      
  19.     Move.l    a0,Cop1Lc(a6)      
  20.     Move.w    #$83c0,DMACon(a6)
  21.  
  22. CheckLoop    Moveq    #1,d0    ; Check Drive 1 for a disk
  23.     Bsr    DiskChange+$20    ; Do the Check
  24.     
  25.     Tst.l    d0    ; If d0=0 then disk founmd
  26.     Beq    DiskFound    ; Do found routine
  27.     
  28. NoDiskInDrive    Move.w    #$333,$Dff180    ; d0=-1 if no disk in drive
  29.     Bra    CheckNext    ; 
  30.     
  31. DiskFound    Move.w    #$fff,$Dff180    ; Disk found = White Screen
  32.  
  33. CheckNext    Move.w    #40,d7    ;
  34. WaitLoop    Move.l    #$05000,d1    ; Quick pause between next
  35.     Bsr    WaitVBL    ; disk check
  36.     Bsr    DoWaitVBL    ;
  37.     Dbf    d7,WaitLoop    ;
  38.     
  39.     Btst    #6,$Bfe001    ; Test the mouse, quit if
  40.     Bne    CheckLoop    ; Pressed...
  41.     
  42.     Bsr    ReturnSys      
  43.     Movem.l    (sp)+,d0-d7/a0-a6 
  44.     Moveq    #0,d0      
  45.     Rts
  46.  
  47. KillSys    Bsr.s    SysWait    
  48.  
  49.     Move.l    $4,a6    
  50.     Lea    GFXName(pc),a1    
  51.     Moveq    #0,d0    
  52.     Jsr    -552(a6)    
  53.         
  54.     Lea    OldCop1(pc),a5
  55.     Move.l    $26(a0),$0(a5)    
  56.     Move.l    $32(a0),$4(a5)    
  57.     
  58.     Lea    HardWare,a6
  59.     Move.w    IntEnaR(a6),d0    
  60.     Move.w    DMAConR(a6),d1  
  61.     Or.w    #$8000,d0    
  62.     And.w    #$03ff,d1    
  63.     Or.w    #$8000,d1    
  64.     Move.w    d0,$8(a5)    
  65.     Move.w    d1,$a(a5)    
  66.     
  67.     Move.w    #$7fff,IntEna(a6) 
  68.     Move.w    #$7fff,DMACon(a6) 
  69.     Rts
  70.  
  71. SysWait    Move.w    #15,d7    
  72. SysWaitLoop    Move.l    #$05000,d1    
  73.     Bsr.s    WaitVBL    
  74.     Bsr.s    DoWaitVBL    
  75.     Dbf    d7,SysWaitLoop    
  76.     Rts
  77.  
  78. DoWaitVBL    Move.l    #$03000,d1    
  79. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  80.     Lea    HardWare,a6    
  81. WaitVBLLoop    Move.l    VPosR(a6),d0    
  82.     And.l    #$1ff00,d0    
  83.     Cmp.l    d1,d0    
  84.     Bne.s    WaitVBLLoop    
  85.     Movem.l    (sp)+,d0-d1/a6    
  86.     Rts        
  87.  
  88. ReturnSys    Lea    HardWare,a6    
  89.     Move.w    OldIntEna(pc),IntEna(a6)
  90.     Move.w    OldDMACon(pc),DMACon(a6)
  91.     Move.l    OldCop1(pc),Cop1lc(a6)
  92.     Move.l    OldCop2(pc),Cop2lc(a6)
  93.     Rts
  94.  
  95. GFXName    Dc.b    "graphics.library",0
  96.     Even
  97. OldCop1    Dc.l    0    
  98. OldCop2    Dc.l    0    
  99. OldIntEna    Dc.w    0    
  100. OldDmaCon    Dc.w    0    
  101. Screen    Dc.l    $c0000    
  102.  
  103. Cmv    Macro
  104.     Dc.w    \2,\1
  105.     EndM
  106.     
  107. Cwt    Macro
  108.     Dc.w    (\1*$100)+$01,$fffe
  109.     EndM    
  110.  
  111. Pal    Macro
  112.     Dc.w    $ffe1,$fffe
  113.     EndM    
  114.  
  115. EndCop    Macro
  116.     Dc.w    $ffff,$fffe
  117.     EndM    
  118.  
  119. CopperList    Cwt    $15    
  120.     Cmv    $0200,BplCon0    
  121.     Cmv    $00bb,BplCon1    
  122.     Cmv    $000a,BplCon2    
  123.     Cmv    $0034,DdfStrt    
  124.     Cmv    $00c8,DdfStop    
  125.     Cmv    $1681,DiwStrt    
  126.     Cmv    $36c1,DiwStop
  127.     Cmv    $0,BplMod1    
  128.     Cmv    $0,BplMod2    
  129.     
  130. CopperCols    Cwt    $25        
  131.     Cmv    $0,Color01
  132.     
  133.     Cwt    $28    
  134.     Cmv    $200,BplCon0    
  135.  
  136.     EndCop
  137.  
  138. DiskChange    Incbin    CodeSegments/DiskChange-Seg
  139.  
  140. ****Custom Chip Registers****
  141.  
  142. Hardware    = $Dff000
  143.  
  144. ;Control Registers
  145.  
  146. Dmaconr    = $002
  147. Vposr    = $004
  148. Vhposr    = $006
  149. Joy0dat    = $00A
  150. Joy1dat    = $00C
  151. Clxdat    = $00E
  152. Intenar    = $01C
  153. Intereqr    = $01E
  154. Copcon    = $02E
  155.  
  156. ;Blitter Registers
  157.  
  158. Bltcon0    = $040
  159. Bltcon1    = $042
  160. Bltafwm    = $044
  161. Bltalwm    = $046
  162. Bltcpth    = $048
  163. Bltcptl    = $04A
  164. Bltbpth    = $04C
  165. Bltbptl    = $04E
  166. Bltapth    = $050
  167. Bltaptl    = $052
  168. Bltdpth    = $054
  169. Bltdptl    = $056
  170. Bltsize    = $058
  171. Bltcmod    = $060
  172. Bltbmod    = $062
  173. Bltamod    = $064
  174. Bltdmod    = $066
  175. Bltcdat    = $070
  176. Bltbdat    = $072
  177. Bltadat    = $074
  178.  
  179. ;Copper Registers
  180.  
  181. Cop1lc    = $080
  182. Cop1lch    = $080
  183. Cop1lcl    = $082
  184. Cop2lc    = $084
  185. Cop2lch    = $084
  186. Cop2lcl    = $086
  187. Copjmp1    = $088
  188. Copjmp2    = $08A
  189. Diwstrt    = $08E
  190. Diwstop    = $090
  191. Ddfstrt    = $092
  192. Ddfstop    = $094
  193. Dmacon    = $096
  194. Clxcon    = $098
  195. Intena    = $09A
  196. Intreq    = $09C
  197.  
  198. ;BitPlane Registers 
  199.  
  200. BplCon0    = $100
  201. BplCon1    = $102
  202. BplCon2    = $104
  203. BplMod1    = $108
  204. BplMod2    = $10a
  205.  
  206. BplPt0h    = $0e0
  207. BplPt0l    = $0e2
  208. BplPt1h    = $0e4
  209. BplPt1l    = $0e6
  210. BplPt2h    = $0e8
  211. BplPt2l    = $0ea
  212. BplPt3h    = $0ec
  213. BplPt3l    = $0ee
  214. BplPt4h    = $0f0
  215. BplPt4l    = $0f2
  216. BplPt5h    = $0f4
  217. BplPt5l    = $0f6
  218.  
  219. ;Colour Registers
  220.  
  221. Color00    = $180
  222. Color01    = $182
  223. Color02    = $184
  224. Color03    = $186
  225. Color04    = $188
  226. Color05    = $18a
  227. Color06    = $18c
  228. Color07    = $18e
  229. Color08    = $190
  230. Color09    = $192
  231. Color10    = $194
  232. Color11    = $196
  233. Color12    = $198
  234. Color13     = $19a
  235. Color14     = $19c
  236. Color15     = $19e
  237. Color16     = $1a0
  238. Color17     = $1a2
  239. Color18     = $1a4
  240. Color19     = $1a6
  241. Color20     = $1a8
  242. Color21     = $1aa
  243. Color22     = $1ac
  244. Color23     = $1ae
  245. Color24     = $1b0
  246. Color25     = $1b2
  247. Color26     = $1b4
  248. Color27     = $1b6
  249. Color28     = $1b8
  250. Color29     = $1ba
  251. Color30     = $1bc
  252. Color31     = $1be
  253.  
  254. EcsNop    = $1fe
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.